package com.rdgzs.jkmj.cmtdlrm.dao;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jinku.datalayer.services.impl.GeneralBaseServicesImpl;
import com.jinku.framework.util.Pagination;
import com.rdgzs.jkmj.cmtdlrm.model.BaseAreaInfo;
import com.jinku.framework.util.home.UtilsObject;
import com.jinku.home.constants.BizConstants;
import com.jinku.framework.mcode.utils.ConstrantCode;
import com.jinku.datalayer.bean.ProjectInfoImpl;

/**
* ###################################################
* @创建日期：2014-3-3 12:01:15
* @开发人员：李广彬
* @功能描述：
* @修改日志：splitId 分库标准【一般是当前用户】
* ###################################################
*/
public interface IBaseDao<T,PK> {
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public <T> T get(PK id);
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public List<T> query(String columnVar,Object val);
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public List<T> query(String columnVar,Object val,String orderBy,String order);
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public List<T> query(T entity)  throws Exception;
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public List<T> query(T entity,String orderBy,String order)  throws Exception;
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public Pagination query(Pagination page,T entity) throws Exception;
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public <PK> PK save(T entity);
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public <PK> PK save(List<T> entityList);
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public <PK> PK saveUpdate(T entity) throws Exception;
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public Integer update(T v_entity,T w_entity) throws Exception;
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public Integer update(T entity) throws Exception;
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public Integer delete(PK id);
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public Integer delete(T entity);
	
	/**
	* @创建日期：2014-3-3 12:01:15
	* @开发人员：李广彬
	* @功能描述：
	* @传入参数：
	*/
	public Integer count(T entity) throws Exception;
	


}


